package learn.two;

import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

public class LoadClassFromFile {
    public static void main(String[] args) {
        try {
            // 指定class文件所在的路径
            String classPath = "D:\\java_workspace\\allproject\\out\\production\\DIYJdkProxy\\com\\ycproxy\\OrderBiz_Proxy.class";

            // 创建一个URL对象，指向class文件所在的目录
            URL url = new URL("file://" + classPath.replace("\\", "/"));
            // 创建一个URLClassLoader对象，用于加载class文件
            URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{url});

            // 指定要加载的类名
            String className = "OrderBiz_Proxy"; // 修改类名以匹配实际的包路径
            // 使用loadClass方法加载指定的类
            Class<?> clazz = urlClassLoader.loadClass(className);

            // 创建类的实例（假设有一个无参构造函数）
            Object instance = clazz.getDeclaredConstructor().newInstance();

            // 调用类的方法（假设有一个名为printHello的方法）
            Method method = clazz.getMethod("printHello");
            method.invoke(instance);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
